/**
 * 
 */
package shooter.network;

import java.util.LinkedList;
import java.util.List;

import shooter.models.Player;
import shooter.models.Sprite;

/**
 * Represents a state of the current game. The server sends this message to each client.
 * The clients receive this message and set their game to the current state.
 * 
 * @author Michail Tausch
 */
public class StateMessage extends Message {

	List<Sprite> shots = new LinkedList<Sprite>();
	List<Player> players = new LinkedList<Player>();
	List<Integer>clientShots = new LinkedList<Integer>();
	
	int time = 99;
	int timeToNextRound = 99;
	int statsTeamRot = 0;
	int statsTeamBlau = 0;
	boolean fB = true;
	boolean timeToNextRoundHelp = false;
	boolean collision = true;

	/**
	 * The constructor.
	 */
	public StateMessage() {

	}
	
	/**
	 * Returns the list of shots.
	 * @return
	 */
	public List<Sprite> getShots() {
		return shots;
	}

	/**
	 * Sets the list of shots.
	 * @param shots
	 */
	public void setShots(List<Sprite> shots) {
		this.shots = shots;
	}
	
	/**
	 * Returns the list of players.
	 * @return
	 */
	public List<Player> getPlayers() {
		return players;
	}
	
	/**
	 * Sets the list of players.
	 * @param players
	 */
	public void setPlayers(List<Player> players) {
		this.players = players;
	}
	
	/**
	 * Returns the current round time.
	 * @return
	 */
	public int getTime() {
		return time;
	}

	/**
	 * Sets the current round time.
	 * @param time
	 */
	public void setTime(int time) {
		this.time = time;
	}

	/**
	 * Returns the list of sounds of the current shots.
	 * @return
	 */
	public List<Integer> getClientShots() {
		return clientShots;
	}

	/**
	 * Sets the list of sounds of the current shots.
	 * @param clientShots
	 */
	public void setClientShots(List<Integer> clientShots) {
		this.clientShots = clientShots;
	}
	
	/**
	 * Returns the seconds to the next round.
	 * @return
	 */
	public int getTimeToNextRound() {
		return timeToNextRound;
	}
	
	/**
	 * Sets the seconds to the next round.
	 * @param timeToNextRound
	 */
	public void setTimeToNextRound(int timeToNextRound) {
		this.timeToNextRound = timeToNextRound;
	}
	
	/**
	 * Is friendly fire enabled?
	 * @return
	 */
	public boolean isfB() {
		return fB;
	}
	
	/**
	 * Sets friendly fire.
	 * @param fB
	 */
	public void setfB(boolean fB) {
		this.fB = fB;
	}
	
	/**
	 * Returns a boolean help variable for the round time.
	 * @return
	 */
	public boolean isTimeToNextRoundHelp() {
		return timeToNextRoundHelp;
	}

	/**
	 * Sets a boolean help variable for the round time.
	 * @param timeToNextRoundHelp
	 */
	public void setTimeToNextRoundHelp(boolean timeToNextRoundHelp) {
		this.timeToNextRoundHelp = timeToNextRoundHelp;
	}
	
	/**
	 * Returns the stats of team WildBoys.
	 * @return
	 */
	public int getStatsTeamRot() {
		return statsTeamRot;
	}
	
	/**
	 * Sets the stats of team WildBoys.
	 * @param statsTeamRot
	 */
	public void setStatsTeamRot(int statsTeamRot) {
		this.statsTeamRot = statsTeamRot;
	}
	
	/**
	 * Returns the stats of team BulletProofs.
	 * @return
	 */
	public int getStatsTeamBlau() {
		return statsTeamBlau;
	}
	
	/**
	 * Sets the stats of team BulletProofs.
	 * @param statsTeamBlau
	 */
	public void setStatsTeamBlau(int statsTeamBlau) {
		this.statsTeamBlau = statsTeamBlau;
	}
	
	/**
	 * Is collision enabled.
	 * @return
	 */
	public boolean isCollision() {
		return collision;
	}

	/**
	 * Sets collision.
	 * @param collision
	 */
	public void setCollision(boolean collision) {
		this.collision = collision;
	}	
}
